import axios from 'axios'
import ElementUI from 'element-ui';
import store from '../vuex/store'
// import QS from 'qs';
import router from '../router/index';
import { ElMessage } from './norepeat.js'
let Message = new ElMessage()

axios.defaults.withCredentials = true;  //允许携带cookie

if (process.env.NODE_ENV === 'development') {
	setInterval(function(){
        axios.defaults.baseURL = localStorage.getItem("requestUrl")
		// axios.defaults.baseURL = 'https://bbgy.cpzsyun.com:82/api/control/'
	},100)

    // axios.defaults.baseURL = 'http://192.168.0.144:8885'     //开发地址用的是vue。config。js里面定义的代理    在本地调试 一般存在跨域问题所以在vue.config.js中定义
} else if (process.env.NODE_ENV === 'production') {
    // var asd = "http://" + window.location.host + "/"
    // axios.defaults.baseURL = asd         //线上请求地址
	setInterval(function(){
        // axios.defaults.baseURL = 'http://192.168.0.143:8886'
		axios.defaults.baseURL = localStorage.getItem("requestUrl")
	},100)
}

axios.interceptors.request.use(
    config => {
    if (JSON.parse(window.sessionStorage.getItem("token"))) {
      //token字段是要和后端协商好的
        config.headers.common["token"] = JSON.parse(window.sessionStorage.getItem("token"));
        // debugger
    }
    return config;
    },
    error => {
    return Promise.reject(error);
    });


//  axios.defaults.headers['token'] =  JSON.parse(window.sessionStorage.getItem("token"))
// //设置超时15s
// // axios.defaults.timeout = 15000
// setInterval(function(){
//     axios.defaults.headers['token'] =  JSON.parse(window.sessionStorage.getItem("token"))
// },100)
// 请求头信息是为post请求设置
// axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'
// axios.defaults.headers['token'] =  JSON.parse(sessionStorage.getItem("token"))
axios.interceptors.response.use(
    response => {
        // 如果返回的状态码为200，说明接口请求成功，可以正常拿到数据
        // 否则的话抛出错误
        if (response.status === 200) {
            return Promise.resolve(response);
        } else {
            console.log(response);
            // return Promise.reject(response);
        }
    },
    error => {
        if(error.response){
            //请求已发送，但服务器响应返回的状态码不在2xx范围
            if(error.response.data.errMsg == "token is not exist"){
                Message.error('登录失效，请重新登录!')
                router.push({path:'/login'})
            }
            else{
                Message.error(error.response.data.errMsg)
                if(error.response.data.errMsg=='未登录'){
                    router.push({path:'/login'})
                }
            }
            return Promise.reject(error.response)
        }else if(error.request){
            //请求已发送，但是服务器没有响应
            Message.error('请求超时，请稍后再试!')
        }else{
            Message.error('服务器错误，请联系管理员')
        }
    }
);

/**
 * 请求get方法
 * */
export function get(url, params){
    return new Promise((resolve, reject) =>{
        if(params){
            url+=params;
        }
        axios.get(url)
        .then(res => {
            resolve(res.data);
        })
        .catch(err => {
            // reject(err.data)
            // console.log(err.data)
        })
    });
}

/**
 * 请求post方法
 */

export function post(url, params) {
    return new Promise((resolve, reject) => {
        axios.post(url, params,{headers: {
            'Content-Type': 'application/json;charset=UTF-8'
            } })
        .then(res => {
            resolve(res.data);
        })
        .catch(err => {
            reject(err.data)
        })
    });
}

// form-data
export function postFormData(url, params) {
    return new Promise((resolve, reject) => {
        axios.post(url, params,{headers: {
            'Content-Type': 'multipart/form-data'
            } })
        .then(res => {
            resolve(res.data);
        })
        .catch(err => {
            // reject(err.data)
        })
    });
}
